"""author: wenyao
   data: 2021/12/13
   project: cjh
"""

class Parent:
    """
    this  is parent
    class
    """
    tmp = "tmp"
    _min = 1
    __max = 10

    def __init__(self):
        self.name = "sc"
        self._age = 4
        self.__desc = "it"

    def __make(self):
        print("这是一个私有方法")
        self.a = "abc"
        print(self.__desc)

    def _protectmake(self):
        print("这是一个保护方法")

    def show(self):
        print(self.__max, self.__desc)
        print("这是一个普通方法")

class Child(Parent):
    def show(self):
        print(self.__max)

#Parent
#类属性  tmp， _min, __max
#实例属性 name, _age, __desc
#方法  __make , _protectmake, show
p = Parent()
c1 = Child()
#访问普通成员和保护成员
# print(p.tmp, c1.tmp)
# print(p._min, c1._age, c1._min)
# p._protectmake()
# c1._protectmake()
#访问私有成员 __max  __desc __make
# print(p.__max)
# print(p.__desc)
# p.show()
# c1.show()
#查看实例空间有哪些属性
# print(p.__dict__)
# print(p._Parent__desc)
#python中的私有其实是一种伪私有，就是将双下划线开头的标识符给改了一个名字
#_类名__标识名
# __max --> _类名__max

#查看对象的属性和方法
print(dir(p))
print(p.__dir__())

#文档注释
print(Parent.__doc__)
# print(help(Parent))

#查看对象和类空间
print(p.__dict__)
print(Parent.__dict__)

#查看对象属于哪个类
print(p.__class__)

#类名
print(Parent.__name__)

#查看父类
print(Child.__bases__)

#对象的hash值
print(c1.__hash__())